<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
// 改变原数组的方法：
    // arr.splice()            从数组中添加或删除元素
    // arr.reverse()           反转数组
    // arr.fill()              填充数组
    // arr.copyWithin()        拷贝数组，不改变原数组长度
    // arr.sort()              数组排序
    // arr.push()              数组结尾添加元素
    // arr.pop()               删除数组的最后一个元素并返回删除的元素
    // arr.unshift()           向数组的开头添加一个或更多元素，并返回新的长度
    // arr.shift()             删除数组的第一个元素
// 不改变原数组的方法：
    // arr.slice()             选取数组的的一部分，并返回一个新数组,不包含第二个参数所表示的元素
    // arr.map()            通过指定函数处理数组的每个元素，并返回处理后的数组
    // arr.forEach()           数组每个元素都执行一次回调函数
    // arr.every()             检测数组所有元素是都符合某条件，只返回布尔值
    // arr.some()              用于检测数组中的元素是否满足指定条件（函数提供）,
    //                         如果有一个元素满足条件，则返回true , 剩余的元素不会再执行检测,否则返回false
    // arr.filter()         检测数组元素，并返回符合条件所有元素的数组
    // arr.reduce()            累加数组中所有的元素，求和
    // arr.entries()           可以把一个对象的键值以数组的形式遍历出来，结果和 for…in 一致，但不会遍历原型属性
    // arr.find()              返回符合传入测试（函数）条件的数组元素，只返回第一个符合该条件的数据
    // arr.concat()            连结两个数组
    // Array.from()            将数组对象转换为真正的数组，
                            // 1、该类数组对象必须具有length属性，用于指定数组的长度。如果没有length属性，那么转换后的数组是一个空数组。
                            // 2、该类数组对象的属性名必须为数值型或字符串型的数字



    var arr1 = ['a', 'b', 'c', 'd', 'e', 'f'],
      arr2 = ['A', 'B', 'C', 'D', 'E', 'F'],
      arr4 = ['18', '19', '21', '22', '34', '36'],
      str = '-123456'
    // 1.连结两个数组 ：concat()
    var arr3 = []
    arr3 = arr3.concat(arr1, arr2)
    console.log(arr3);
    // 2.复制数组元素,绝不会改变数组大小：copyWithin(要复制到的位置，要复制的元素起始位置)
    console.log(arr1.copyWithin(0, 4));
    // 3.检测数组所有元素是都符合某条件：every(function(item,index,arr){})  只返回布尔值
    console.log(arr4.every(item => {
      return item >= 19
    }));
    // 4.用固定值填充数组：fill(要填充的元素，起始位置，结束位置)
    console.log(arr1.fill('A', 2, 3));
    // 5.检测数组元素，并返回符合条件所有元素的数组：filter(function(item,index,arr){})   返回符合条件的所有元素组成的数组
    console.log(arr4.filter(item => {
      return item > 20
    }));
    // 6.返回符合传入测试（函数）条件的数组元素，只返回第一个符合该条件的数据：find(function(item,index,arr){}) 只返回第一个符合条件的元素
    console.log(arr4.find(item => {
      return item > 20
    }));
    // 7.数组每个元素都执行一次回调函数：forEach(function(item,index,arr){})  
    arr4.forEach((item, index, arr) => {
      arr[index] = item * 5
    });
    console.log(arr4);
    // 8.通过给定的对象中创建一个数组：from
    var arr6 = Array.from(str)
    console.log(arr6);
    // 9.搜索数组中的元素，并返回它所在的位置：indexOf 
    const num = arr2.indexOf('D')
    console.log(num);
    // 10.返回一个指定的字符串值最后出现的位置，在一个字符串中的指定位置从后向前搜索：lastIndexOf
    const num2 = arr1.lastIndexOf('a')
    console.log(num2);
    // 11.把数组的所有元素放入一个字符串：join
    const strArr1 = arr1.join('')
    console.log(strArr1);
    // 12.通过指定函数处理数组的每个元素，并返回处理后的数组：map()
    arr4.map((item, index, arr) => {
      return item * 10
    })
    console.log(arr4);
    // 13.删除数组的最后一个元素并返回删除的元素:pop()
    console.log(arr1.pop());
    // 14.删除数组的第一个元素:shift()
    console.log(arr1.shift());
    // 15.向数组的开头添加一个或更多元素，并返回新的长度:unshift()
    console.log(arr1.unshift('a'));
    // 16.向数组的末尾添加一个或更多元素，并返回新的长度:push()
    console.log(arr1.push('f'));
    // 17.从数组中添加或删除元素:splice()
    arr1.splice(2, 2, 'C', 'D');
    console.log(arr1);
    // 18.反转数组：reverse()
    arr1.reverse()
    console.log(arr1);
    // 19.	选取数组的的一部分，并返回一个新数组,不包含第二个参数所表示的元素：slice()
    console.log(arr1.slice(0, 3));
    // 20.用于检测数组中的元素是否满足指定条件（函数提供）,如果有一个元素满足条件，则返回true , 剩余的元素不会再执行检测,否则返回false:
    console.log(arr4.some(item => {
      return item > 2000
    }));
    console.log(arr4);
    // 21.对数组的元素进行排序:sort()
    console.log(arr1.sort());
    console.log(arr4.sort((a, b) => { return a - b }));
    // 22.把数组转换为字符串，并返回结果,不改变原数组:toString()
    console.log(arr1.toString());
    console.log(arr1);
    // 23.
  </script>
</body>

</html>